using System;

namespace JGSY.CMS.LowCode.Platform.Dtos
{
    /// <summary>
    /// 发布请求数据传输对象
    /// 用于传输内容发布操作的请求信息
    /// </summary>
    public class PublishRequestDto
    {
        /// <summary>
        /// 内容标识符
        /// 要发布的内容的唯一标识
        /// </summary>
        public long ContentId { get; set; }
        
        /// <summary>
        /// 操作人员
        /// 执行发布操作的用户标识或姓名
        /// </summary>
        public string Operator { get; set; } = string.Empty;
    }

    /// <summary>
    /// 撤销发布请求数据传输对象
    /// 用于传输内容撤销发布操作的请求信息
    /// </summary>
    public class RevokePublishRequestDto
    {
        /// <summary>
        /// 内容标识符
        /// 要撤销发布的内容的唯一标识
        /// </summary>
        public long ContentId { get; set; }
        
        /// <summary>
        /// 操作人员
        /// 执行撤销发布操作的用户标识或姓名
        /// </summary>
        public string Operator { get; set; } = string.Empty;
    }

    /// <summary>
    /// 发布历史数据传输对象
    /// 用于传输内容发布操作的历史记录信息
    /// </summary>
    public class PublishHistoryDto
    {
        /// <summary>
        /// 内容标识符
        /// 操作的内容的唯一标识
        /// </summary>
        public long ContentId { get; set; }
        
        /// <summary>
        /// 操作时间
        /// 发布或撤销操作执行的时间
        /// </summary>
        public DateTime ActionTime { get; set; }
        
        /// <summary>
        /// 操作类型
        /// 操作的类型，如"发布"或"撤销"
        /// </summary>
        public string ActionType { get; set; } = string.Empty; // 发布/撤销
        
        /// <summary>
        /// 操作人员
        /// 执行操作的用户标识或姓名
        /// </summary>
        public string Operator { get; set; } = string.Empty;
        
        /// <summary>
        /// 操作状态
        /// 操作执行的结果状态
        /// </summary>
        public string Status { get; set; } = string.Empty;
    }

    /// <summary>
    /// 发布状态数据传输对象
    /// 用于传输内容的当前发布状态信息
    /// </summary>
    public class PublishStatusDto
    {
        /// <summary>
        /// 内容标识符
        /// 查询状态的内容的唯一标识
        /// </summary>
        public long ContentId { get; set; }
        
        /// <summary>
        /// 发布状态
        /// 内容的当前状态，如"已发布"、"已撤销"或"发布中"
        /// </summary>
        public string Status { get; set; } = string.Empty; // 已发布/已撤销/发布中
        
        /// <summary>
        /// 最后更新时间
        /// 状态最后一次变更的时间
        /// </summary>
        public DateTime LastUpdateTime { get; set; }
    }
}
